package org.jeecg.modules.htxincailiao.account.domain.bo;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.common.util.SmartVerificationUtil;
import org.jeecg.modules.htxincailiao.account.constant.HTAccountTypeEnum;
import org.jeecg.modules.htxincailiao.address.domain.vo.HTAddressVO;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;


@Data
public class HTUserUpdateBO {

    /**
     * 用户ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "用户ID")
    private String id;

    /**腾讯账号ID（管理腾讯平台账户体系）*/
    @Excel(name = "腾讯账号ID（管理腾讯平台账户体系）", width = 15)
    @ApiModelProperty(value = "腾讯账号ID（管理腾讯平台账户体系）")
    private String tencentAccountId;

    @NotNull(message = "用户类型不能为空")
    @ApiModelProperty(value = "账户类型:-1-后台用户 0-平台会员 1-问答专家 2-平台商户 3-评估机构 4-联盟成员")
    private HTAccountTypeEnum accountType;

    /**密码(必须包含大小写字母和数字的组合，可以使用特殊字符(~!@#$%^&*)，长度在8-32之间)*/
    @Excel(name = "密码(必须包含大小写字母和数字的组合，可以使用特殊字符(~!@#$%^&*)，长度在8-32之间)", width = 15)
    @ApiModelProperty(value = "密码(必须包含大小写字母和数字的组合，可以使用特殊字符(~!@#$%^&*)，长度在8-32之间)")
    private String password;

    /**
     * 手机号
     */
    @NotNull(message = "手机号不能为空")
    @Pattern(regexp = SmartVerificationUtil.PHONE_REGEXP, message = "手机号格式不正确")
    @ApiModelProperty(value = "手机号")
    private String phoneNumber;

    /**
     * 邮箱
     */
    @Excel(name = "邮箱", width = 15)
    @ApiModelProperty(value = "邮箱")
    private String email;

    /**邮编*/
    @Excel(name = "邮编", width = 15)
    @ApiModelProperty(value = "邮编")
    private String zipcode;

    /**
     * 用户名
     */
    @NotNull(message = "用户名不能为空")
    @ApiModelProperty(value = "用户名")
    private String username;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    private String realName;

    /**参会人员*/
    @Excel(name = "参会人员", width = 15)
    @ApiModelProperty(value = "参会人员")
    private String participant;

    /**
     * 昵称
     */
    @ApiModelProperty(value = "昵称")
    private String nickname;


    /**
     * 工号
     */
    @ApiModelProperty(value = "工号")
    private String workNumber;


    /**
     * 头像
     */
    @ApiModelProperty(value = "头像")
    private String avatar;

    /**
     * 性别
     */
    @Dict(dicCode = "sex")
    @ApiModelProperty(value = "性别")
    private Integer gender;

    /**
     * 生日
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "生日")
    private java.util.Date birthday;

    /**
     * 职位
     */
    @ApiModelProperty(value = "职位")
    private String position;


    /**
     * 是否冻结
     */
    @Dict(dicCode = "is_locked")
    @ApiModelProperty(value = "是否冻结")
    private Boolean isLocked;

    /**
     * 审核状态
     */
    @Excel(name = "审核状态", width = 15, dicCode = "audit_status")
    @Dict(dicCode = "audit_status")
    @ApiModelProperty(value = "审核状态")
    private Integer auditStatus;

    /**
     * 逻辑删除：1表示删除，0表示未删除。
     */
    @ApiModelProperty(value = "逻辑删除：1表示删除，0表示未删除。")
    private Boolean isDeleted;

    /**
     * 所属机构
     */
    @Excel(name = "所属机构", width = 15)
    @ApiModelProperty(value = "所属机构")
    private String agencyName;

    /**
     * forums分类ID
     */
    @Excel(name = "forums分类ID", width = 15, dictTable = "ht_forums_category", dicText = "name", dicCode = "id")
    @Dict(dictTable = "ht_forums_category", dicText = "name", dicCode = "id")
    @ApiModelProperty(value = "forums分类ID")
    private String forumsCategoryId;

    /**
     * 企业名
     */
    @ApiModelProperty(value = "企业名")
    private String enterpriseName;

    /**
     * 开户银行
     */
    @ApiModelProperty(value = "开户银行")
    private String bankAccountName;

    /**
     * 银行账号
     */
    @ApiModelProperty(value = "银行账号")
    private String bankAccountNum;

    /**
     * 税号
     */
    @ApiModelProperty(value = "税号")
    private String taxId;

    /**
     * 机构Logo
     */
    @ApiModelProperty(value = "机构Logo")
    private String logo;

    /**
     * 企业主图
     */
    @ApiModelProperty(value = "企业主图")
    private String cover;

    /**
     * 简介
     */
    @ApiModelProperty(value = "简介")
    private String introduction;
    /**
     * 经营模式
     */
    @Excel(name = "经营模式", width = 15, dictTable = "ht_business_model_category", dicText = "name", dicCode = "id")
    @Dict(dictTable = "ht_business_model_category", dicText = "name", dicCode = "id")
    @ApiModelProperty(value = "经营模式")
    private String businessModelId;
    /**
     * 注册资金
     */
    @Excel(name = "注册资金", width = 15)
    @ApiModelProperty(value = "注册资金")
    private String registeredCapital;
    /**
     * 年营业额
     */
    @Excel(name = "年营业额", width = 15)
    @ApiModelProperty(value = "年营业额")
    private String yearlyturnover;

    /**
     * 行业分类ID
     */
    @Excel(name = "行业分类ID", width = 15, dictTable = "ht_industry_category", dicText = "name", dicCode = "id")
    @Dict(dictTable = "ht_industry_category", dicText = "name", dicCode = "id")
    @ApiModelProperty(value = "行业分类ID")
    private String industryCategoryId;



    /**
     * 营业执照
     */
    @Excel(name = "营业执照", width = 15)
    @ApiModelProperty(value = "营业执照")
    private String certificate;

    /**
     * 其他资质
     */
    @Excel(name = "其他资质", width = 15)
    @ApiModelProperty(value = "其他资质")
    private String otherCertificates;


    private String merchantId;

    private String sysUserId;


    private String salt;

    /**资质认证状态：0-未认证 1-认证中 2-已认证 3-认证驳回*/
    @Excel(name = "资质认证状态：0-未认证 1-认证中 2-已认证 3-认证驳回", width = 15, dicCode = "certificate_audit_status")
    @Dict(dicCode = "certificate_audit_status")
    @ApiModelProperty(value = "资质认证状态：0-未认证 1-认证中 2-已认证 3-认证驳回")
    private Integer certificateAuditStatus;


    /**联系人*/
    @Excel(name = "联系人", width = 15)
    @ApiModelProperty(value = "联系人")
    private String contactPerson;

    /**联系人*/
    @Excel(name = "联系电话", width = 15)
    @ApiModelProperty(value = "联系电话")
    private String contactPhoneNumber;

    /**企业地址ID*/
    @Excel(name = "企业地址ID", width = 15)
    @ApiModelProperty(value = "企业地址ID")
    private String enterpriseAddressId;

}
